package study.java.jdk.jdk8._6_reference;//package study.jdk.jdk8._6_reference;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.function.BiPredicate;

@Slf4j
public class Ref_02_Test {

    /**
     * 指向任意类型实例方法的方法引用，例如String的length方法，写成String::length；
     * 类::实例方法名
     */
    @Test
    public void test2() {
        BiPredicate<String, String> bp = (x, y) -> x.equals(y);
        log.info("{}", bp.test("a", "b"));

        BiPredicate<String, String> bp1 = String::equals;
        log.info("{}", bp1.test("a", "b"));
    }

    /**
     *
     */
//    @Test
//    public void test() {
//        //构造器引用：它的语法是Class::new，或者更一般的Class<T>::new
//        Car car = Car.create(Car::new);
//        Car car1 = Car.create(Car::new);
//        Car car2 = Car.create(Car::new);
//        Car car3 = new Car();
//        List<Car> carLt = Arrays.asList(car, car1, car2, car3);
//
//        //静态方法引用：它的语法是 Class::static_method
//        carLt.forEach(Car::collide);
//        //特定类的任意对象的方法引用：它的语法是 Class::method
//        carLt.forEach(Car::repair);
//        //特定对象的方法引用：它的语法是 instance::method
//        final Car police = Car.create(Car::new);
//        carLt.forEach(police::follow);
//    }

}
